<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //Object.defineProperty(obj,prop,descriptor)
        //obj你要定义属性的对象
        //prop 你要定义或者修改的属性1的名称
        //descriptor有关你定义的属性得到一些设置

        let num = 18;
        let person = {
            name: "jack",
            sex: "男",
            //age:18,
        };
        Object.defineProperty(person, "age", {
            // value:18,
            // enumerable:true,//控制属性是否可以枚举,默认时false
            //  writable:true, //控制属性是否可以修改,默认false
            //  configurable:true,//控制属性是否被删除,默认false

            get() {
                console.log("有人动了你的对象");
            }, //getter 
            //当有人修改age属性的时候,set就会被调用
            set(value) {
                console.log("有人去修改了你的对象,并且修改成", value);
            }


        });

        for (const key in obj) {
            console.log(person[key]);
        }





        let obj = {
            x: 100
        };
        let obj2 = {
            y: 200
        };
        Object.defineProperty(obj2, "x", {
            get() {
                return obj.x;
            },
            set(value) {
                obj.x = value;
            }

        })
    </script>

</body>

</html>